Data storage systems such as large data centers and other types of data storage system are increasingly complex. The input/output path to storage is often long and comprises many layers with opaque interfaces between them. This makes it hard to enforce end-to-end policies that dictate a storage input/output flow's performance, for example, to guarantee a particular bandwidth available for the flow. A storage input/output flow comprises a stream of storage input/output requests between storage and computing endpoints. For example, to read data from a file, write data to a file or create a file to store data.
Virtualization of physical servers and virtualization of storage in enterprise data centers has led to increased complexity along storage input/output flows.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known data storage systems.